﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.ComponentModel;
using System.Xml.Serialization;
using Grid.Extensions;
using System.Windows.Forms;

namespace LUC.Domains
{
	public class DefFeedsSet
	{
		[Browsable(false)]
		public SerializableFont font { get; set; }

		[DisplayName("Шрифт текста кнопки категории")]
		[XmlIgnore]
		public Font font_disp
		{
			get { return font.ToFont(); }
			set { font = new SerializableFont(value); }
		}

		[Browsable(false)]
		public int color;

		[DisplayName("Цвет кнопки категории")]
		[XmlIgnore]
		public Color color_disp
		{
			get { return ColorTranslator.FromWin32(color); }
			set { color = ColorTranslator.ToWin32(value); }
		}

		[DisplayName("Период обновления")]
		public int period { get; set; }
	}
	
	public class DefNotifiesSet
	{
		[Browsable(false)]
		public SerializableFont font{get; set;}

		[DisplayName("Шрифт текста события")]
		[XmlIgnore]
		public Font font_disp
		{ 
			get { return font.ToFont(); }
			set { font = new SerializableFont(value); }
		}

		[Browsable(false)]
		public int color{ get; set; }

		[DisplayName("Цвет нового сообщения")]
		[XmlIgnore]
		public Color color_disp
		{
			get { return ColorTranslator.FromWin32(color); }
			set { color = ColorTranslator.ToWin32(value); }
		}
		
		[DisplayName("Дата (смещение в днях)")]
		public int delta_days{ get; set; }

		[DisplayName("Дата (смещение в HH:mm:ss)")]
		[DateTimeFormat(Format=DateTimePickerFormat.Time)]
		public DateTime delta_hhmmss { get; set; }


		[DisplayName("Период (в днях)")]
		public int inc_days { get; set; }

		[DisplayName("Период (в HH:mm:ss)")]
		[DateTimeFormat(Format = DateTimePickerFormat.Time)]
		public DateTime inc_hhmmss { get; set; }

		[DisplayName("Отображать оповещение по наступлению события")]
		public bool is_ringed{ get; set; }

		[DisplayName("Удалять сообщение по наступлению события")]
		public bool is_delete{ get; set; }

		[Browsable(false)]
		public SerializableFont time_over_font{ get; set; }

		[DisplayName("Шрифт наступившего события")]
		[XmlIgnore]
		public Font time_over_font_disp 
		{ 
			get { return time_over_font.ToFont(); }
			set { time_over_font = new SerializableFont(value); }
		}

		[Browsable(false)]
		public int time_over_color{ get; set; }

		[DisplayName("Цвет наступившего события")]
		[XmlIgnore]
		public Color time_over_color_disp
		{
			get { return ColorTranslator.FromWin32(time_over_color); }
			set { time_over_color = ColorTranslator.ToWin32(value); }
		}
	}

	public class MainSet
	{
		[Browsable(false)]
		public int main_color{ get; set; }

		[DisplayName("Цвет основного окна")]
		[XmlIgnore]
		public Color main_color_disp
		{
			get { return ColorTranslator.FromWin32(main_color); }
			set { main_color = ColorTranslator.ToWin32(value); }
		}

		[DisplayName("Автозапуск")]
		public bool Autorun{get; set;}
	}

	public class DefaultSettings
	{
		public DefFeedsSet def_f_set;
		public DefNotifiesSet def_n_set;
		public MainSet main_set;

		public DefaultSettings(DefFeedsSet n_def_f_set, DefNotifiesSet n_def_n_set, MainSet n_main_set)
		{
			def_n_set = n_def_n_set;
			def_f_set = n_def_f_set;
			main_set = n_main_set;
		}
		public DefaultSettings()
		{}
	}
}
